package vista.paneles.hojaDibujo;

import logica.EntidadRepetidaException;
import logica.IdExternoInexistenteException;
import logica.SinNombreException;

import controlador.ControladorEditor;

import eventos.aceptar.EventoAceptarNombreDiagramaHijo;
import vista.objetos.ProyectoGraficable;
import vista.ventanas.VentanaDiagramaHijo;

public class CreadorDeSubdiagramas {
	
	public static void pedirNombreSubdiagrama()
	{
		ControladorEditor controlador = ControladorEditor.getInstancia();
		
		VentanaDiagramaHijo ventana = new VentanaDiagramaHijo(controlador.getVentanaPrograma());
		ventana.escucharEventosBotonAceptar(new EventoAceptarNombreDiagramaHijo(ventana));
		ventana.setVisible(true);
	}
	
	public static void copiarGraficables(String nombreSubdiagrama) throws SinNombreException, EntidadRepetidaException, IdExternoInexistenteException
	{
		HojaDeDibujo hoja = ControladorEditor.getInstancia().getVentanaPrograma().getHojaDeDibujo();
		
    	ProyectoGraficable proyecto = ControladorEditor.getInstancia().getProyectoActual();
    	
    	if ( proyecto.existeElNombreDelDiagrama( nombreSubdiagrama ) )
    		throw new SinNombreException("No puede nombrarse al diagrama con ese nombre porque ya existe un diagrama con ese nombre ("+ nombreSubdiagrama +")");   	
    	
    	proyecto.crearDiagramaHijo(nombreSubdiagrama, hoja.getControladorSeleccion().getObjetosSeleccionados());
    	
    	ControladorEditor.getInstancia().getVentanaPrograma().agregarDiagrama(
    			proyecto.getDiagramaActual());
	}

	public static void crearDiagramaVacio(String nombreSubdiagrama) throws SinNombreException
	{
    	ProyectoGraficable proyecto = ControladorEditor.getInstancia().getProyectoActual();
    	
    	if ( proyecto.existeElNombreDelDiagrama( nombreSubdiagrama ) )
    		throw new SinNombreException("No puede nombrarse al diagrama con ese nombre porque ya existe un diagrama con ese nombre ("+ nombreSubdiagrama +")");
    	
    	proyecto.crearDiagramaHijoVacio(nombreSubdiagrama);
    	
    	ControladorEditor.getInstancia().getVentanaPrograma().agregarDiagrama(
    			proyecto.getDiagramaActual());
    	ControladorEditor.getInstancia().actualizarVista();
	}
}
